---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.12.0
  labels:
    heritage: deckhouse
    module: node-manager
    cluster.x-k8s.io/provider: infrastructure-static
    cluster.x-k8s.io/v1beta1: v1alpha1
  name: staticmachines.infrastructure.cluster.x-k8s.io
spec:
  group: infrastructure.cluster.x-k8s.io
  names:
    kind: StaticMachine
    listKind: StaticMachineList
    plural: staticmachines
    singular: staticmachine
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - description: Machine ready status
          jsonPath: .status.ready
          name: Ready
          type: string
        - description: Static instance ID
          jsonPath: .spec.providerID
          name: ProviderID
          type: string
        - description: Machine object which owns with this StaticMachine
          jsonPath: .metadata.ownerReferences[?(@.kind=="Machine")].name
          name: Machine
          type: string
      name: v1alpha1
      schema:
        openAPIV3Schema:
          description: StaticMachine is the Schema for the Cluster API Provider Static
          properties:
            apiVersion:
              description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
              type: string
            kind:
              description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
              type: string
            metadata:
              type: object
            spec:
              description: StaticMachineSpec defines the desired state of StaticMachine
              properties:
                labelSelector:
                  description: A label selector is a label query over a set of resources.
                    The result of matchLabels and matchExpressions are ANDed. An empty
                    label selector matches all objects. A null label selector matches
                    no objects.
                  properties:
                    matchExpressions:
                      description: matchExpressions is a list of label selector requirements.
                        The requirements are ANDed.
                      items:
                        description: A label selector requirement is a selector that
                          contains values, a key, and an operator that relates the key
                          and values.
                        properties:
                          key:
                            description: key is the label key that the selector applies
                              to.
                            type: string
                          operator:
                            description: operator represents a key's relationship to
                              a set of values. Valid operators are In, NotIn, Exists
                              and DoesNotExist.
                            type: string
                          values:
                            description: values is an array of string values. If the
                              operator is In or NotIn, the values array must be non-empty.
                              If the operator is Exists or DoesNotExist, the values
                              array must be empty. This array is replaced during a strategic
                              merge patch.
                            items:
                              type: string
                            type: array
                        required:
                          - key
                          - operator
                        type: object
                      type: array
                    matchLabels:
                      additionalProperties:
                        type: string
                      description: matchLabels is a map of {key,value} pairs. A single
                        {key,value} in the matchLabels map is equivalent to an element
                        of matchExpressions, whose key field is "key", the operator
                        is "In", and the values array contains only "value". The requirements
                        are ANDed.
                      type: object
                  type: object
                  x-kubernetes-map-type: atomic
                providerID:
                  type: string
              type: object
            status:
              description: StaticMachineStatus defines the observed state of StaticMachine
              properties:
                addresses:
                  description: MachineAddresses is a slice of MachineAddress items to
                    be used by infrastructure providers.
                  items:
                    description: MachineAddress contains information for the node's
                      address.
                    properties:
                      address:
                        description: The machine address.
                        type: string
                      type:
                        description: Machine address type, one of Hostname, ExternalIP,
                          InternalIP, ExternalDNS or InternalDNS.
                        type: string
                    required:
                      - address
                      - type
                    type: object
                  type: array
                conditions:
                  description: Conditions defines current service state of the StaticMachine.
                  items:
                    description: Condition defines an observation of a Cluster API resource
                      operational state.
                    properties:
                      lastTransitionTime:
                        description: Last time the condition transitioned from one status
                          to another. This should be when the underlying condition changed.
                          If that is not known, then using the time when the API field
                          changed is acceptable.
                        format: date-time
                        type: string
                      message:
                        description: A human readable message indicating details about
                          the transition. This field may be empty.
                        type: string
                      reason:
                        description: The reason for the condition's last transition
                          in CamelCase. The specific API may choose whether or not this
                          field is considered a guaranteed API. This field may not be
                          empty.
                        type: string
                      severity:
                        description: Severity provides an explicit classification of
                          Reason code, so the users or machines can immediately understand
                          the current situation and act accordingly. The Severity field
                          MUST be set only when Status=False.
                        type: string
                      status:
                        description: Status of the condition, one of True, False, Unknown.
                        type: string
                      type:
                        description: Type of condition in CamelCase or in foo.example.com/CamelCase.
                          Many .condition.type values are consistent across resources
                          like Available, but because arbitrary conditions can be useful
                          (see .node.status.conditions), the ability to deconflict is
                          important.
                        type: string
                    required:
                      - lastTransitionTime
                      - status
                      - type
                    type: object
                  type: array
                failureMessage:
                  description: |
                    FailureMessage will be set in the event that there is a terminal problem
                    reconciling the StaticMachine and will contain a more verbose string suitable
                    for logging and human consumption.
                  type: string
                failureReason:
                  description: |
                    FailureReason will be set in the event that there is a terminal problem
                    reconciling the StaticMachine and will contain a succinct value suitable
                    for machine interpretation.
                  type: string
                ready:
                  description: |
                      Ready denotes that the static machine (infrastructure) is ready.
                  type: boolean
              type: object
          required:
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}
